#ifndef PROGRAM_H
#define PROGRAM_H

#include "OS/WindowEventUtils.h"
#include "Engine/Engine.h"
#include "Engine/FrameEvent.h"

namespace tyro
{
	namespace Engine
	{
		class Program : public FrameListener, public OS::WindowEventListener
		{
		public:
			Program(void);
			virtual ~Program(void);

			virtual	void Run();
			
		protected:
			
			virtual bool Initialise();

			virtual bool FrameQueued(const FrameEvent& evt);


			virtual void WindowClosed(Graphics::IRenderWindow* window);
			void CreateScene();
			void CreateCamera();
			void CreateViewport();
		private:

			Engine* engine;
			Scene::SceneGraph* sceneGraph;
			Camera::Camera* camera;
			Graphics::IRenderWindow* window;

		};

	}
}

#endif